package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.FacturaDAOSQLServer;
import co.inventario.datos.sqlserver.PedidoVentaDAOSQLServer;
import co.inventario.entidad.FacturaDTO;
import co.inventario.entidad.PedidoVentaDTO;

public class FacturaNegocio {

	public void crear(FacturaDTO facturaDTO, Connection connection) throws Exception, SQLException {
		FacturaDAOSQLServer facturaDAOSQLServer = new FacturaDAOSQLServer();
		FacturaDTO facturaDTOConnsultado = facturaDAOSQLServer.consultarPorConsecutivo(facturaDTO, connection);
		if (facturaDTOConnsultado == null) {
			facturaDAOSQLServer.crear(facturaDTOConnsultado, connection);
		} else {
			throw new Exception("La Factura que intenta crear ya existe.");
		}
	}

	public void actualizar(FacturaDTO facturaDTO, Connection connection) throws Exception, SQLException {
		FacturaDAOSQLServer facturaDAOSQLServer = new FacturaDAOSQLServer();
		FacturaDTO facturaDTOConsultado = facturaDAOSQLServer.consultarPorConsecutivo(facturaDTO, connection);
		if (facturaDTOConsultado != null) {
			facturaDAOSQLServer.actualizar(facturaDTOConsultado, connection);
		}
	}

	public FacturaDTO consultarPorCodigo(FacturaDTO facturaDTO, Connection connection) throws Exception, SQLException {
		FacturaDAOSQLServer facturaDAOSQLServer = new FacturaDAOSQLServer();
		FacturaDTO facturaDTOConsultado = facturaDAOSQLServer.consultarPorCodigo(facturaDTO, connection);
		return facturaDTOConsultado;
	}

	public ArrayList<FacturaDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		FacturaDAOSQLServer facturaDAOSQLServer = new FacturaDAOSQLServer();
		ArrayList<FacturaDTO> facturaDTOLista = facturaDAOSQLServer.consultarTodo(connection);
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		PedidoVentaDTO pedidoVentaDTO = null;
		for (FacturaDTO facturaDTO : facturaDTOLista) {
			pedidoVentaDTO = pedidoVentaDAOSQLServer.consultarPorCodigo(facturaDTO.getPedidoVentaDTO(), connection);
			facturaDTO.setPedidoVentaDTO(pedidoVentaDTO);
		}
		return facturaDTOLista;
	}
}
